package stack;

import java.util.Random;
/**
 * StackFactory.java
 * @author Luis Valdeavellano 11218 Sección 20
 * @since 11/08/2012
 * @lastmodified 11/08/2012
 * @version 1
 * @param <E> Tipo de objetos que almacenará la implementación de pila.
 * Descripción: Selecciona la implementacion a utilizar para un stack.
 *              Se utiliza el patron Factory.
 *              Selecciona la implementacion aleatoriamente.
 */

public class StackFactory<E> {
    
    /**
     * Selecciona aleatoriamente la implementacion a utilizar para un stack
     * @return Objeto tipo Stack
     */
    public Stack<E> getStack() {
        Random random = new Random();
        int param = random.nextInt(3);
        switch (param) {
            case 0:     System.out.println("Stack Array List");
                        return new StackArrayList<E>();
            case 1:     System.out.println("Stack Vector");
                        return new StackVector<E>();
            case 2:     System.out.println("Stack Lista");
                        return new StackLista<E>();
            default:    return getStack();
        }
    }
}